package br.com.ftt.transportadora.vo;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Calendar;

public class NotaFiscalComum implements Serializable
{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	int nNf;
	Calendar dataEmissao;
	Calendar dataEntradaSaida;
	double vlrTotal;
	int qtdVol;
	String esp;
	double pesoLiq;
	double pesoBruto;
	int idLogistica;
	int idTransportadora;
	String nomeLogistica;
	String nomeTransportadora;
	boolean modificada;
	ClienteComum cliente;
	EnderecoComum endereco;
	ProdutoComum produtos[];
	
	public int getnNf ( )
	{
		return nNf;
	}
	
	public void setnNf ( int nNf )
	{
		this.nNf = nNf;
	}
	
	public Calendar getDataEmissao ( )
	{
		return dataEmissao;
	}
	
	public void setDataEmissao ( Calendar dataEmissao )
	{
		this.dataEmissao = dataEmissao;
	}
	
	public Calendar getDataEntradaSaida ( )
	{
		return dataEntradaSaida;
	}
	
	public void setDataEntradaSaida ( Calendar dataEntradaSaida )
	{
		this.dataEntradaSaida = dataEntradaSaida;
	}
	
	public double getVlrTotal ( )
	{
		return vlrTotal;
	}
	
	public void setVlrTotal ( double vlrTotal )
	{
		this.vlrTotal = vlrTotal;
	}
	
	public int getQtdVol ( )
	{
		return qtdVol;
	}
	
	public void setQtdVol ( int qtdVol )
	{
		this.qtdVol = qtdVol;
	}
	
	public String getEsp ( )
	{
		return esp;
	}
	
	public void setEsp ( String esp )
	{
		this.esp = esp;
	}
	
	public double getPesoLiq ( )
	{
		return pesoLiq;
	}
	
	public void setPesoLiq ( double pesoLiq )
	{
		this.pesoLiq = pesoLiq;
	}
	
	public double getPesoBruto ( )
	{
		return pesoBruto;
	}
	
	public void setPesoBruto ( double pesoBruto )
	{
		this.pesoBruto = pesoBruto;
	}
	
	public int getIdLogistica ( )
	{
		return idLogistica;
	}
	
	public void setIdLogistica ( int idLogistica )
	{
		this.idLogistica = idLogistica;
	}
	
	public int getIdTransportadora ( )
	{
		return idTransportadora;
	}
	
	public void setIdTransportadora ( int idTransportadora )
	{
		this.idTransportadora = idTransportadora;
	}
	
	public String getNomeLogistica ( )
	{
		return nomeLogistica;
	}
	
	public void setNomeLogistica ( String nomeLogistica )
	{
		this.nomeLogistica = nomeLogistica;
	}
	
	public String getNomeTransportadora ( )
	{
		return nomeTransportadora;
	}
	
	public void setNomeTransportadora ( String nomeTransportadora )
	{
		this.nomeTransportadora = nomeTransportadora;
	}
	
	public boolean isModificada ( )
	{
		return modificada;
	}
	
	public void setModificada ( boolean modificada )
	{
		this.modificada = modificada;
	}
	
	public ClienteComum getCliente ( )
	{
		return cliente;
	}
	
	public void setCliente ( ClienteComum cliente )
	{
		this.cliente = cliente;
	}
	
	public EnderecoComum getEndereco ( )
	{
		return endereco;
	}
	
	public void setEndereco ( EnderecoComum endereco )
	{
		this.endereco = endereco;
	}
	
	public ProdutoComum[] getProdutos ( )
	{
		return produtos;
	}
	
	public void setProdutos ( ProdutoComum[] produto )
	{
		this.produtos = produto;
	}
	
	@Override
	public int hashCode ( )
	{
		final int prime = 31;
		int result = 1;
		result = prime * result + ((cliente == null) ? 0 : cliente.hashCode());
		result = prime * result
		        + ((dataEmissao == null) ? 0 : dataEmissao.hashCode());
		result = prime
		        * result
		        + ((dataEntradaSaida == null) ? 0 : dataEntradaSaida.hashCode());
		result = prime * result
		        + ((endereco == null) ? 0 : endereco.hashCode());
		result = prime * result + ((esp == null) ? 0 : esp.hashCode());
		result = prime * result + idLogistica;
		result = prime * result + idTransportadora;
		result = prime * result + (modificada ? 1231 : 1237);
		result = prime * result + nNf;
		result = prime * result
		        + ((nomeLogistica == null) ? 0 : nomeLogistica.hashCode());
		result = prime
		        * result
		        + ((nomeTransportadora == null) ? 0 : nomeTransportadora
		                .hashCode());
		long temp;
		temp = Double.doubleToLongBits(pesoBruto);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		temp = Double.doubleToLongBits(pesoLiq);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		result = prime * result + Arrays.hashCode(produtos);
		result = prime * result + qtdVol;
		temp = Double.doubleToLongBits(vlrTotal);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}
	
	@Override
	public boolean equals ( Object obj )
	{
		if (this == obj) return true;
		if (obj == null) return false;
		if (getClass() != obj.getClass()) return false;
		NotaFiscalComum other = (NotaFiscalComum) obj;
		if (cliente == null)
		{
			if (other.cliente != null) return false;
		}
		else if (!cliente.equals(other.cliente)) return false;
		if (dataEmissao == null)
		{
			if (other.dataEmissao != null) return false;
		}
		else if (!dataEmissao.equals(other.dataEmissao)) return false;
		if (dataEntradaSaida == null)
		{
			if (other.dataEntradaSaida != null) return false;
		}
		else if (!dataEntradaSaida.equals(other.dataEntradaSaida)) return false;
		if (endereco == null)
		{
			if (other.endereco != null) return false;
		}
		else if (!endereco.equals(other.endereco)) return false;
		if (esp == null)
		{
			if (other.esp != null) return false;
		}
		else if (!esp.equals(other.esp)) return false;
		if (idLogistica != other.idLogistica) return false;
		if (idTransportadora != other.idTransportadora) return false;
		if (modificada != other.modificada) return false;
		if (nNf != other.nNf) return false;
		if (nomeLogistica == null)
		{
			if (other.nomeLogistica != null) return false;
		}
		else if (!nomeLogistica.equals(other.nomeLogistica)) return false;
		if (nomeTransportadora == null)
		{
			if (other.nomeTransportadora != null) return false;
		}
		else if (!nomeTransportadora.equals(other.nomeTransportadora)) return false;
		if (Double.doubleToLongBits(pesoBruto) != Double
		        .doubleToLongBits(other.pesoBruto)) return false;
		if (Double.doubleToLongBits(pesoLiq) != Double
		        .doubleToLongBits(other.pesoLiq)) return false;
		if (!Arrays.equals(produtos, other.produtos)) return false;
		if (qtdVol != other.qtdVol) return false;
		if (Double.doubleToLongBits(vlrTotal) != Double
		        .doubleToLongBits(other.vlrTotal)) return false;
		return true;
	}
	
	@Override
	public String toString ( )
	{
		return "NotaFiscalComum [nNf=" + nNf + ", dataEmissao=" + dataEmissao
		        + ", dataEntradaSaida=" + dataEntradaSaida + ", vlrTotal="
		        + vlrTotal + ", qtdVol=" + qtdVol + ", esp=" + esp
		        + ", pesoLiq=" + pesoLiq + ", pesoBruto=" + pesoBruto
		        + ", idLogistica=" + idLogistica + ", idTransportadora="
		        + idTransportadora + ", nomeLogistica=" + nomeLogistica
		        + ", nomeTransportadora=" + nomeTransportadora
		        + ", modificada=" + modificada + ", cliente=" + cliente
		        + ", endereco=" + endereco + ", produto="
		        + Arrays.toString(produtos) + "]";
	}
	
}
